今天,我們來看一下一個九九乘法表,到底可以用多少方式來撰寫
當然,最簡單而且最常見是用兩個for loop來撰寫
兩個for loop代表兩個變數,因此九九乘法表最常見就是for loop
int main(){
for(int y=1;y<=9;y++){
for(int x=1;x<=9;x++){
printf("%d*%d=%d\t",y,x,y*x );
}
printf("\n");
}
return 0;
}
======================分格線======================
可以用兩個for loop來完成,當然也可以用2個while loop來達到目的
int y=1;
int x=1;
int main(){
while (y<=9){
while (x<=9){
printf("%d*%d=%d\t",y,x,y*x );
x++;
}
y++;
x=1;
printf("\n");
}
return 0;
}
要小心while loop只有條件判斷,因此要記得補加變數的初始值跟更新值
======================分格線======================
前後順暢更改一下,while loop就可以更改為do...while loop
int y=1;
int x=1;
int main(){
do{
do{
printf("%d*%d=%d\t",y,x,y*x );
x++;
}while (x<=9);
y++;
x=1;
printf("\n");
}while (y<=9);
return 0;
}
while跟do...while loop,兩者最大分別是:前者會先條件判斷,後者會先執行一次再作條件判斷
======================分格線======================
for、while、do...while一定要同時一對使用嗎?
int main(){
for(int y=1,x=1; y<=9 ;x++){
printf("%d*%d=%d\t",y,x,y*x);
x<9 ? x:(x=0,y++,printf("\n"));
}
return 0;
}
加一個三元運算子,就可以離開新手村出去打大魔王了
======================分格線======================
可以用1個for loop完成,當然也可以用1個while loop來完成
int y=1;
int x=1;
int main(){
while(y<=9){
printf("%d*%d=%d\t",y,x,y*x);
x<9 ? x++:(x=1,y++,printf("\n"));
}
return 0;
}
======================分格線======================
while loop可以,同樣道理do...while loop也是沒問題了
int y=1;
int x=1;
int main(){
do{
printf("%d*%d=%d\t",y,x,y*x);
x<9 ? x++:(x=1,y++,printf("\n"));
}while(y<=9);
return 0;
}
======================分格線======================
3個常用的loop已經用完了
那我們就看看有沒有其他方式來達到目的
第四種方式,我們可以return方式呼叫自己
int y=1;
int x=1;
int main(){
if(x<=9 && y<=9){
printf("%d*%d=%d\t",y,x,x*y);
x++;
}
if(x>9){
x=1;
y++;
printf("\n");
}
return main();
}
但這種方式會不停執行,因此必定會出現「stopped working」
因此不建議這樣做。
======================分格線======================
接下來,就是最大膽的語法,goto
int y=1;
int x=1;
int main(){
LOOP: if(x<=9 && y<=9){
printf("%d*%d=%d\t",y,x,x*y);
x++;
}
if(x>9){
x=1;
y++;
printf("\n");
}
goto LOOP;
return 0;
}
在這裡的return 0是不會執行,但為了良好的習慣,還是要加上去
======================分格線======================
接下來,就是不太常見的遞迴
int x=1;
int y=1;
int table (int x, int y){
if (x<=9){
if (y<=9){
printf("%d*%d=%2d\t",x,y,x*y);
table(x,y+1);
}
else{
printf("\n");
x++;
table(x,1);
} } }
int main() {
table(x, y);
return 0;
}
這方式有點近似main呼叫main,只是改為function呼叫function
======================分格線======================
結論:
「方法很多種,但答案只有一個。」一個簡單的九九乘法表至少可以用9種方式來完成。
每一種方法都有優缺點,有執行速度快、有易理解、佔用記憶體少...大家可以按需要來達到不同目的